//
//  IMAPlatform.h
//  TIMAdapter
//
//  Created by AlexiChen on 16/2/17.
//  Copyright © 2016年 AlexiChen. All rights reserved.
//

#import <Foundation/Foundation.h>

// Demo的业务逻辑入口，外部所的要使用IMSDK的地方，都间接能过IMAPlatform调用
typedef EQALNetworkType TCQALNetwork;


typedef void(^QAIM_MessageBlock)(NSString * jsonMessage);

@interface IMAPlatform : NSObject
{
@protected
    IMAHost                     *_host;             // 当前用户
    IMAContactManager           *_contactMgr;       // 联系人
    IMAConversationManager      *_conversationMgr;  // 会话列表
}

@property (nonatomic, strong) IMAHost                 *host;

@property (nonatomic, strong) IMAConversationManager  *conversationMgr;

@property (nonatomic, strong) IMAContactManager       *contactMgr;

// 当前是否连接上，外部可用此方法判断是否有网
@property (nonatomic, assign) BOOL isConnected;

// 当前使用的网络类型，默认wifi，只取EQALNetworkType 中对应的 -1:未知 0:无网 1:wifi 2:移动网，用户若需要，可重写对应的方法以满足自身App需求
@property (nonatomic, readonly) TCQALNetwork networkType;

// 被踢下线时，如果当前在直播的时候，进行调用
@property (nonatomic, copy) CommonVoidBlock offlineExitLivingBlock;

//获取自定义消息
@property (nonatomic, copy) QAIM_MessageBlock  imMessageBlock;



/**
 初始化
 */

+ (instancetype)sharedInstance;




/**
 登录

 @param param 登录参数
 @param succ 登录成功
 @param fail 登录失败
 */
- (void)login:(TIMLoginParam *)param succ:(TIMLoginSucc)succ fail:(TIMFail)fail;

/**
 退出

 @param succ 退出成功
 @param fail 退出失败
 */
- (void)logout:(TIMLoginSucc)succ fail:(TIMFail)fail;

/**
 添加配置信息
 */
+ (instancetype)configWith:(IMAPlatformConfig *)cfg;


/**
  配置进入主界面后的要拉取的数据

 @param param 登录参数
 */
- (void)configOnLoginSucc:(TIMLoginParam *)param;




/**
 是否是自动登录
 */
+ (BOOL)isAutoLogin;

/**
 配置自定义的_host，hostcls须为IMAHost的子类
 */
+ (void)configHostClass:(Class)hostcls;


+ (void)setAutoLogin:(BOOL)autologin;

- (IMAPlatformConfig *)localConfig;

- (void)saveToLocal;

// 初始化新增的缓存同步逻辑

- (IMAUser *)getReceiverOf:(IMAConversation *)conv;

- (void)offlineLogin;

- (void)configHost:(TIMLoginParam *)param;

- (void)changeToNetwork:(TCQALNetwork)work;

@end


